home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
-
- Version 8.5 of the Icon Programming
- Language
-
- Ralph E. Griswold, Clinton L.
- Jeffery, Gregg M. Townsend, and
- Kenneth Walker
-
- Department of Computer Science, The
- University of Arizona
-
-
-
-
-
-
- 1.__Introduction
-
- The current version of Icon is Version 8.5. The second edi-
- tion of the Icon book [1] describes Version 8.0. This report is
- a supplement to that book.
-
- Most of the language extensions in Version 8.5 are upward-
- compatible with previous versions of Icon and most programs writ-
- ten for earlier versions work properly under Version 8.5. The
- language additions to Version 8.5 are:
-
- + an optional interface to the X Window system (for plat-
- forms that have X)
-
- + new functions and keywords
-
- + several minor changes
-
- There also are changes to the implementation in Version 8.5,
- including support for multiple storage regions, that provide more
- capabilities for some users. See Section 3.
-
-
- 2.__Language_Features
-
- X-Window_Facilities
-
- Version 8.5 provides support for X Windows through a large
- repertoire of functions. These facilities are optional and are
- not available on all platforms. See [2] for more information.
-
- New_Functions_and_Keywords
-
- The new functions and keywords are described briefly here. At
- the end of this report there also is a sheet with more complete
- descriptions in the style of the second edition of the Icon book.
-
-
-
- IPD174 - 1 - January 31, 1992
-
-
-
-
-
-
-
-
- This sheet can be trimmed and used as an insert to the book.
-
- There are five new functions:
-
- chdir(s) Changes the current directory to s but fails if
- there is no such directory or if the change can-
- not be made.
-
- delay(i) Delays execution i milliseconds. This function
- presently is only supported on UNIX platforms.
-
- flush(f) Flushes the input/output buffers for file f.
-
- function() Generates the names of the Icon (built-in) func-
- tions.
-
- sortf(X,i) Produces a sorted list of the elements of X. The
- results are similar to those of sort(X,i),
- except that among lists and among records,
- structure values are ordered by comparing their
- ith fields.
-
- There are four new keywords:
-
- &allocated Generates the number of bytes allocated since
- the beginning of program execution. The first
- result is the total number of bytes in all
- regions, followed by the number of bytes in the
- static, string, and block regions.
-
- &e The base of the natural logarithms, 2.71828 ...
-
- &phi The golden ratio, 1.61803 ...
-
- &pi The ratio of the circumference of a circle to
- its diameter, 3.14159 ...
-
- The X interface adds additional new keywords [2].
-
- Minor_Changes
-
- + The invocable declaration is accepted but ignored by the
- interpreter to provide source-language compatibility with
- the Icon compiler. See [3] for a description of this
- declaration.
-
- + Real literals that are less than 1 no longer need a lead-
- ing zero. For example, .5 now is a valid real literal
- instead of being the dereferencing operator applied to
- the integer 5.
-
- + The identifiers listed by display() are now given in
- sorted order.
-
-
-
-
- IPD174 - 2 - January 31, 1992
-
-
-
-
-
-
-
-
- + In sorting structures, records now are first sorted by
- record name and then by age (serial number).
-
- + The keyword &features now includes either interpreted or
- compiled to indicate whether the program is interpreted
- or compiled.
-
- + If X-Window facilities are supported, &features also
- includes X Windows.
-
- + If multiple storage regions are supported, &features also
- includes Multiple Regions.
-
- + Error message 101 now reads integer expected or out of
- range to reflect the fact that not all operations support
- large integers.
-
- + Error 120 now reads two csets or two sets expected to
- more accurately reflect the fact that set operations
- require arguments of the same type.
-
- + Error 125, list or set expected, has been added for
- sortf().
-
- + Errors 140, window expected, and 141, program terminated
- by window manager, have been added when X-Window facili-
- ties are supported.
-
- + Errors 316, interpreter stack too large, and 318, co-
- expression stack too large, have been added for 16-bit
- platforms.
-
-
- 3.__Implementation_Changes
-
- The implementation of Version 8.5 is different in many
- respects from the implementation of Version 8.0 [4]. Most of the
- differences are transparent to the user. The following changes
- provide additional facilities:
-
- + On platforms that use fixed-sized storage regions (not-
- ably MS-DOS), Icon now allocates additional regions if
- more space is needed. Consequently, some programs that
- formerly ran out of memory on such platforms no longer do
- so.
-
- Memory monitoring is not designed for multiple regions
- and if an additional region is allocated, memory monitor-
- ing is disabled.
-
- + Under MS-DOS, iconx now finds icode files at any place on
- the PATH specification as well as in the current direc-
- tory.
-
-
-
-
- IPD174 - 3 - January 31, 1992
-
-
-
-
-
-
-
-
- 4.__Limitations,_Bugs,_and_Problems
-
-
- + Line numbers sometimes are wrong in diagnostic mes-
- sages related to lines with continued quoted
- literals.
-
- + Large-integer arithmetic is not supported in i to j
- and seq(). Large integers cannot be assigned to
- keywords.
-
- + Large-integer literals are constructed at run-time.
- Consequently, they should not be used in loops
- where they would be constructed repeatedly.
-
- + Conversion of a large integer to a string is qua-
- dratic in the length of the integer. Conversion of
- very a large integer to a string may take a very
- long time and give the appearance of an endless
- loop.
-
- + Right shifting of large negative integers by
- ishift() is inconsistent with the shifting of ordi-
- nary integers.
-
- + Integer overflow on exponentiation may not be
- detected during execution. Such overflow may occur
- during type conversion.
-
- + In some cases, trace messages may show the return
- of subscripted values, such as &null[2], that would
- be erroneous if they were dereferenced.
-
- + If a long file name for an Icon source-language
- program is truncated by the operating system, mys-
- terious diagnostic messages may occur during link-
- ing.
-
- + Stack overflow checking uses a heuristic that is
- not always effective.
-
- + If an expression such as
-
- x := create expr
-
- is used in a loop, and x is not a global variable,
- unreferenceable co-expressions are generated by
- each successive create operation. These co-
- expressions are not garbage collected. This prob-
- lem can be circumvented by making x a global vari-
- able or by assigning a value to x before the create
- operation, as in
-
-
-
-
-
- IPD174 - 4 - January 31, 1992
-
-
-
-
-
-
-
-
- x := &null
- x := create expr
-
-
- + Stack overflow in a co-expression may not be
- detected and may cause mysterious program malfunc-
- tion.
-
- Acknowledgements
-
- The design and implementation of Version 8.5 of Icon was
- supported, in part, by the National Science Foundation
- Grants CCR-8713690 and CCR-8901573.
-
- Sandra Miller contributed to the implementation of Ver-
- sion 8.5 of Icon.
-
- References
-
-
- 1. R. E. Griswold and M. T. Griswold, The Icon Programming
- Language, Prentice-Hall, Inc., Englewood Cliffs, NJ,
- second edition, 1990.
-
- 2. C. L. Jeffery, X-Icon: An Icon Windows Interface, The
- Univ. of Arizona Tech. Rep. 91-1, 1991.
-
- 3. K. Walker, Using the Icon Compiler, The Univ. of
- Arizona Icon Project Document IPD157, 1991.
-
- 4. R. E. Griswold, Supplementary Information for the
- Implementation of Version 8.5 of Icon, The Univ. of
- Arizona Icon Project Document IPD180, 1992.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- IPD174 - 5 - January 31, 1992
-
-
-
-
-
-
-
-
- __________________________________________________
-
- chdir(s) : n change directory
-
- chdir(s) changes the directory to s but fails if
- there is no such directory or if the change cannot
- be made. Whether the change in the directory
- persists after program termination depends on the
- operating system on which the program runs.
-
- Error: 103 s not string
-
- __________________________________________________
-
- delay(i) : n delay execution
-
- delay(i) delays execution i milliseconds. This
- function presently is supported only on UNIX
- platforms.
-
- Error: 101 i not integer
-
- __________________________________________________
-
- flush(f) : n flush buffer
-
- flush(f) flushes the input/output buffers for f.
-
- Error: 105 f not file
-
- __________________________________________________
-
- function() : s1, s2,...,sn generate function names
-
- function() generates the names of the Icon
- (built-in) functions.
-
- __________________________________________________
-
- sortf(X,i) : L sort list or set by field
-
- sortf(X,i) produces a sorted list of the values in
- X. Sorting is primarily by type and in most
- respects is the same as with sort(X,i). However,
- among lists and among records, two structures are
- ordered by comparing their ith fields. i can be
- negative but not zero. Two structures having equal
- ith fields are ordered as they would be in regular
- sorting, but structures lacking an ith field
- appear before structures having them.
-
- Default:i 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Errors: 101 i not integer
- 115 X not list or set
- 205 i = 0
- 307 inadequate space in block region
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- __________________________________________________
-
- &allocated : i1, i2, i3, i4 cumulative allocation
-
- &allocated generates the total amount of space, in
- bytes, allocated since the beginning of program
- execution. The first value is the total for all
- regions, followed by the totals for the static,
- string, and block regions, respectively. The
- space allocated in the static region is always
- given as zero. Note: &allocated gives the
- cumulative allocation; &storage gives the current
- allocation; that is, the amount that has not been
- freed by garbage collection.
-
- __________________________________________________
-
- &e : r base of natural logarithms
-
- The value of &e is the base of the natural
- logarithms, 2.71828 ... .
-
- __________________________________________________
-
- &phi : r golden ratio
-
- The value of &phi is the golden ratio, 1.61803 ...
- .
-
- __________________________________________________
-
- &pi : ratio of circumference to diameter of a circle
-
- The value of &pi is the ratio of the circumference
- of a circle to its diameter, 3.14159 ... .
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-